package com.example.stuwork.dao;

import com.example.stuwork.pojo.Class;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 班级数据访问接口
 */
@Repository
public interface ClassDao {
    
    /**
     * 获取所有班级
     *
     * @return 班级列表
     */
    List<Class> findAll();
    
    /**
     * 根据班级ID获取班级信息
     *
     * @param classId 班级ID
     * @return 班级信息
     */
    Class getById(@Param("classId") Long classId);
    
    /**
     * 根据院系编号获取班级列表
     *
     * @param deptNumber 院系编号
     * @return 班级列表
     */
    List<Class> findByDeptNumber(@Param("deptNumber") String deptNumber);
    
    /**
     * 添加班级
     *
     * @param clazz 班级信息
     * @return 影响行数
     */
    int insert(Class clazz);
    
    /**
     * 更新班级信息
     *
     * @param clazz 班级信息
     * @return 影响行数
     */
    int update(Class clazz);
    
    /**
     * 删除班级
     *
     * @param classId 班级ID
     * @return 影响行数
     */
    int delete(@Param("classId") Long classId);
    
    /**
     * 检查班级是否存在
     *
     * @param deptNumber  院系编号
     * @param grade       年级
     * @param majorCode   专业编码
     * @param classNumber 班级号
     * @return 存在返回true，否则返回false
     */
    boolean exists(@Param("deptNumber") String deptNumber, 
                  @Param("grade") String grade,
                  @Param("majorCode") String majorCode,
                  @Param("classNumber") String classNumber);
    
    /**
     * 根据班级名称模糊查询班级
     *
     * @param keyword 关键字
     * @return 班级列表
     */
    List<Class> search(@Param("keyword") String keyword);
} 